#ifndef __PROTO_H__
#define __PROTO_H__

#define GROUP_ADDR	"234.2.3.4"
#define RCV_PORT	5555
#define CHN_NR		200
#define CHN_LIST_ID	0
#define	MIN_CHN_DATA_ID	1
#define MAX_CHN_DATA_ID	(CHN_NR + MIN_CHN_DATA_ID - 1)
#define MAX_DATA_MSG	512

// 列表
// 单个频道列表的结构
struct list_entry_st {
	int8_t chnid; // 频道号
	int8_t len; // 自述长度
	char desrc[1]; // 频道描述
}__attribute__((packed));
// 整个列表
struct chn_list_st {
	int8_t chnid; /*must be CHN_LIST_ID*/
	struct list_entry_st lists[1];
}__attribute__((packed));

// 数据
struct chn_data_st {
	int8_t chnid; /*MIN_CHN_DATA_ID ~ MAX_CHN_DATA_ID*/
	char data[MAX_DATA_MSG];
};

// 公用体
typedef union msg_st {
	int8_t chnid;
	struct chn_list_st ls;
	struct chn_data_st dt;
}msg_t;

#endif

